/// 格式化工具类
class Formatters {
  /// 格式化日期
  ///
  /// 根据日期与当前时间的差异返回不同的格式：
  /// - 今天：显示"今天 HH:MM"
  /// - 昨天：显示"昨天"
  /// - 一周内：显示"X天前"
  /// - 一周以上：显示"YYYY-MM-DD"
  static String formatDate(DateTime dateTime) {
    final now = DateTime.now();
    final difference = now.difference(dateTime);

    if (difference.inDays == 0) {
      // 今天
      return '今天 ${dateTime.hour.toString().padLeft(2, '0')}:${dateTime.minute.toString().padLeft(2, '0')}';
    } else if (difference.inDays == 1) {
      // 昨天
      return '昨天';
    } else if (difference.inDays < 7) {
      // 一周内
      return '${difference.inDays}天前';
    } else {
      // 超过一周
      return '${dateTime.year}-${dateTime.month.toString().padLeft(2, '0')}-${dateTime.day.toString().padLeft(2, '0')}';
    }
  }

  /// 格式化文件大小
  ///
  /// 将字节大小转换为更易读的格式，如：
  /// - 1024 -> 1 KB
  /// - 1048576 -> 1.0 MB
  static String formatFileSize(int size) {
    const suffixes = ['B', 'KB', 'MB', 'GB', 'TB'];
    var i = 0;
    num fileSize = size;

    while (fileSize > 1024 && i < suffixes.length - 1) {
      fileSize /= 1024;
      i++;
    }

    return '${fileSize.toStringAsFixed(i > 0 ? 1 : 0)} ${suffixes[i]}';
  }
}
